package com.parcial.vista;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.parcial.data.entidades.Alumno;
import com.parcial.data.entidades.Examen;
import com.parcial.data.entidades.Pregunta;
import com.parcial.data.entidades.RespuestaAlumno;
import com.parcial.data.fachadas.FachadaAlumno;
import com.parcial.data.fachadas.FachadaRespuestaAlumno;

@WebServlet("/ExamenServlet")
public class ExamenServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

    public ExamenServlet() {
        super();
    }

	@SuppressWarnings("unchecked")
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		
		HttpSession session = request.getSession(true);
		
		Examen examen = (Examen) session.getAttribute("examen");
		Alumno alumno = (Alumno) session.getAttribute("alumno");
		
		
		List<Pregunta> preguntas = (List<Pregunta>) session.getAttribute("preguntas");
		
		List<RespuestaView> info = new ArrayList<RespuestaView>();
		
		float contadorCorrectas = 0;
		
		for(Pregunta preg: preguntas) {			
			String resp = request.getParameter(preg.getNroPregunta().toString());
			RespuestaAlumno respAlu = new RespuestaAlumno();
			respAlu.setIdRespuestaAlumno((int)new Date().getTime());
			respAlu.setIdAlumnoFk(alumno.getIdAlumno());
			respAlu.setIdExamenFk(examen.getIdExamen());
			respAlu.setNroPregunta(preg.getNroPregunta());
			respAlu.setLetraRespuesta(resp);
			FachadaRespuestaAlumno.getFachadaRespuestaAlumnon().insertar(respAlu);
			
			boolean esCorrecta = resp.equals(preg.getCorrecta());
			if(esCorrecta) {
				contadorCorrectas++;
			}
			
			RespuestaView rv = new RespuestaView();
			rv.setInfo("Pregunta Nro " + preg.getNroPregunta() + " Respuesta Alumno: " + resp + (esCorrecta ? (" Coooorrectooo!!!"): (" Incorrecto, la respuesta correcta es: " + preg.getCorrecta())));
			rv.setColor(esCorrecta ? RespuestaView.VERDE: RespuestaView.ROJO);
			
			info.add(rv);
		}
		
		alumno.setRindio(true);
		FachadaAlumno.getFachadaAlumno().actualizar(alumno);
		
		//TODO CALCULAR EL RESULTADO EN PORCENTAJE
		Float resultado = (contadorCorrectas/preguntas.size())*100f;
		
		String congratulation = "Te bocharon ";
		if(resultado > 59.99f) {
			congratulation = "Felicitaciones Has Aprobado ";
		}
		
		session.setAttribute("congratulation", congratulation);
		
		String resultadoString = resultado.intValue() + " %";
		
		session.setAttribute("info", info);
		
		session.setAttribute("resultado", resultadoString);
		
		response.sendRedirect("resultado.jsp");
		
	}

}
